package com.tedu.bill.demo1;

import java.util.Objects;

/**
 * Author：毕龙
 * Date: 2024/5/9 19:06
 */
public  class Teacher {
    private String name;
    private int  age;
    public  void print(){

    }

    public Teacher() {
    }

    public Teacher(String name, int age) {
        this.name = name;
        this.age = age;
    }


  /*  @Override
    public boolean equals(Object o) {
       if(this == o) return true;//两个对象的地址都相同  是同一个对象
       //参数对象和当前对象是同一个类型
        if(o.getClass() == this.getClass()){
            //将参数对象转化为当前对象的类型
            Teacher t = (Teacher) o;
            //--比较对象中的所有数据
            return t.getName().equals(this.getName())  && t.getAge() == this.getAge();
       }
        //两个对象 的内容不相同
       return  false;
    }*/

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Teacher teacher = (Teacher) o;
        return age == teacher.age && Objects.equals(name, teacher.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    //  @Override
//    public boolean equals(Object o) {
//        //判断地址是否相同
//        if (this == o) return true;
//        // 参数是否为null 判断类型是否相同
//        if (o == null || this.getClass() != o.getClass()) return false;
//        //类型相同  强转
//        Teacher teacher = (Teacher) o;
//        //--比较所有的数据
//        //Objects  工具类判断两个对象的类型是否相同
//        return age == teacher.age && Objects.equals(name, teacher.name);
//    }
//    //重写父类hashcode
//    @Override
//    public int hashCode() {
//        return Objects.hash(name, age);
//    }


    public void finalize()throws Exception{

        System.out.println("执行子类重写的finalize方法");
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
